package myWebApp;

import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;

/* JVM第二章
 * 直接内存溢出
 * 2017年8月3日11:43:40
 * jvm参数:-XX:MaxDirectMemorySize=1M
 */
public class ByteTest5 {

	public static void main(String[] args) {
		List<ByteBuffer> list = new ArrayList<ByteBuffer>();
		while(true){
			ByteBuffer byteBuffer = ByteBuffer.allocate(1000);
			list.add(byteBuffer);
		}
//		long start = System.currentTimeMillis();
//        ByteBuffer buffer = ByteBuffer.allocate(500);//分配500个字节的ByteBuffer
//        for (int i = 0; i < 1000000; i ++) {
//            for (int j = 0; j < 99; j ++) {
//                buffer.putInt(j);           //向DirectBuffer写入数据
//            }
//            buffer.flip();
//            for (int j = 0; j < 99; j ++) {
//                buffer.get();                   //从DirectBuffer中读取数据
//            }
//            buffer.clear();
//        }
//        System.out.println("ByteBuffer use : " + ( System.currentTimeMillis() - start ) + "ms");
		
	}
}

/*错误信息：
 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
	at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
	at myWebApp.ByteTest5.main(ByteTest5.java:19)
 */
